// 地理位置数据类型定义

export interface Province {
  /** 省份代码 */
  code: string;
  /** 省份名称 */
  name: string;
  /** 省份简称 */
  shortName?: string;
  /** 城市列表 */
  cities: City[];
}

export interface City {
  /** 城市代码 */
  code: string;
  /** 城市名称 */
  name: string;
  /** 城市简称 */
  shortName?: string;
  /** 区县列表 */
  districts: District[];
}

export interface District {
  /** 区县代码 */
  code: string;
  /** 区县名称 */
  name: string;
  /** 区县简称 */
  shortName?: string;
}

export interface LocationData {
  /** 省份列表 */
  provinces: Province[];
}

export interface LocationQuery {
  /** 省份名称或代码 */
  province?: string | undefined;
  /** 城市名称或代码 */
  city?: string | undefined;
  /** 区县名称或代码 */
  district?: string | undefined;
  /** 搜索关键词 */
  keyword?: string | undefined;
  /** 是否模糊搜索 */
  fuzzy?: boolean;
}

export interface LocationResponse {
  success: boolean;
  message: string;
  data: Province[];
  totalCount: number;
}

export interface OilPriceByLocationRequest {
  /** 省份名称 */
  province: string;
  /** 城市名称（可选） */
  city?: string | undefined;
  /** 区县名称（可选） */
  district?: string | undefined;
  /** 燃油类型 */
  fuelType?: '92' | '95' | '98' | '0' | undefined;
  /** 是否包含周边地区 */
  includeNearby?: boolean;
}

export interface OilPriceByLocationResponse {
  success: boolean;
  message: string;
  data: {
    /** 查询位置信息 */
    location: {
      province: string;
      city: string;
      district: string;
    };
    /** 燃油类型 */
    fuelType: string;
    /** 油价 */
    price: number;
    /** 更新时间 */
    updateTime: Date;
    /** 周边地区油价（如果启用） */
    nearbyPrices?: Array<{
      province: string;
      price92: number;
      price95: number;
      price98: number;
      price0: number;
      updateTime: Date;
    }>;
  } | null;
  /** 错误信息 */
  error?: string;
}

export interface LocationCache {
  /** 缓存键 */
  key: string;
  /** 缓存数据 */
  data: any;
  /** 缓存时间 */
  timestamp: Date;
  /** 过期时间 */
  expiresAt: Date;
}
